#pragma once
#include "MaterialInstance.h"

namespace Alice
{
    class Material;
    class MaterialInstance;
    class FMaterialShaderMap;
    class MaterialShared
    {
    public:
        FMaterialShaderMap* mGameThreadMaterialShaderMap;
        FMaterialShaderMap* mRenderThreadMaterialShaderMap;
        bool CacheShaders();
        void BeginCacheShaders();
        bool BeginCompileShaderMap();
        void SetGameThreadShaderMap(FMaterialShaderMap*inShaderMap);
    };
    class MaterialSharedResource:public MaterialShared
    {
    public:
        MaterialSharedResource(Material*inMaterial,MaterialInstance*inMaterialInstance=nullptr);
        Material*mMaterial;
        MaterialInstance*mMaterialInstance;
    };
}
